<?php

echo '<' . '!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<h2>Submitted data from PDF Form</h2>
<p style="font-size:0.9em;">(See formsubmit.php in the Examples folder for details)</p>
';

if (count ( $_POST )) {
	// To display HTML output from PDF form
	echo '<h4>HTML format data sent as POST</h4>';
	foreach ( $_POST as $name => $val ) {
		$t = mb_convert_encoding ( PDFDocEncodingToWin1252 ( $val ), 'UTF-8', 'Windows-1252' ); // If
		                                                                                        // from
		                                                                                        // core
		                                                                                        // fonts
		                                                                                        // doc
		echo '<p>PDFDocEnc: ' . $name . ' => ' . $t . '</p>';
	}
} else if (count ( $_GET )) {
	// To display HTML output from PDF form
	echo '<h4>HTML format data sent as GET</h4>';
	foreach ( $_GET as $name => $val ) {
		$t = mb_convert_encoding ( PDFDocEncodingToWin1252 ( $val ), 'UTF-8', 'Windows-1252' ); // If
		                                                                                        // from
		                                                                                        // core
		                                                                                        // fonts
		                                                                                        // doc
		echo '<p>PDFDocEnc: ' . $name . ' => ' . $t . '</p>';
	}
} 

else {
	$postdata = file_get_contents ( "php://input" );
	
	if ($postdata) {
		echo '<h4>XFDF format data detected</h4>';
		// To parse XFDF
		if (preg_match_all ( '/<field name="([^>]*)"\s*>\s*(<value\s*>(.*?)<\/value\s*>)\s*<\/field\s*>/s', $postdata, $m )) {
			for($i = 0; $i < count ( $m [0] ); $i ++) {
				// if multiple values in response e.g. from multiple selected
				// options
				preg_match_all ( '/<value\s*>(.*?)<\/value\s*>/s', $m [2] [$i], $v );
				if (count ( $v [0] ) > 1) {
					$values = array ();
					foreach ( $v [1] as $val ) {
						$values [] = $val;
					}
					// foreach($v[1] AS $val) { $values[] =
					// htmlspecialchars_decode($val); }
					echo '<p>Field: ' . $m [1] [$i] . ' => [array of values] (' . implode ( ', ', $values ) . ')</p>';
				} else {
					// echo '<p>Field: '.$m[1][$i].' =>
					// '.htmlspecialchars_decode($m[3][$i]).'</p>';
					echo '<p>Field: ' . $m [1] [$i] . ' => ' . $m [3] [$i] . '</p>';
				}
			}
		}
		if (preg_match_all ( '/<field name="([^>]*)"\s*>\s*<value\s*\/\s*>\s*<\/field\s*>/s', $postdata, $m )) {
			for($i = 0; $i < count ( $m [0] ); $i ++) {
				echo '<p>Field: ' . $m [1] [$i] . ' => [blank]</p>';
			}
		}
		if (preg_match_all ( '/<field name="([^>]*)"\s*\/\s*>/s', $postdata, $m )) {
			for($i = 0; $i < count ( $m [0] ); $i ++) {
				echo '<p>Field: ' . $m [1] [$i] . ' => [no value]</p>';
			}
		}
		
		// To display whole XFDF
		// $postdata = preg_replace("/[\n\r]/", "", $postdata);
		// $postdata = preg_replace('/>\s*</', ">\n<", $postdata);
		// echo nl2br(htmlspecialchars($postdata));
	} else {
		echo "No form data detected";
	}
}

echo '</body></html>';

exit ();
function PDFDocEncodingToWin1252($txt) {
	$Win1252ToPDFDocEncoding = array (
			chr ( 0200 ) => chr ( 0240 ),
			chr ( 0214 ) => chr ( 0226 ),
			chr ( 0212 ) => chr ( 0227 ),
			chr ( 0237 ) => chr ( 0230 ),
			chr ( 0225 ) => chr ( 0200 ),
			chr ( 0210 ) => chr ( 0032 ),
			chr ( 0206 ) => chr ( 0201 ),
			chr ( 0207 ) => chr ( 0202 ),
			chr ( 0205 ) => chr ( 0203 ),
			chr ( 0227 ) => chr ( 0204 ),
			chr ( 0226 ) => chr ( 0205 ),
			chr ( 0203 ) => chr ( 0206 ),
			chr ( 0213 ) => chr ( 0210 ),
			chr ( 0233 ) => chr ( 0211 ),
			chr ( 0211 ) => chr ( 0213 ),
			chr ( 0204 ) => chr ( 0214 ),
			chr ( 0223 ) => chr ( 0215 ),
			chr ( 0224 ) => chr ( 0216 ),
			chr ( 0221 ) => chr ( 0217 ),
			chr ( 0222 ) => chr ( 0220 ),
			chr ( 0202 ) => chr ( 0221 ),
			chr ( 0232 ) => chr ( 0235 ),
			chr ( 0230 ) => chr ( 0037 ),
			chr ( 0231 ) => chr ( 0222 ),
			chr ( 0216 ) => chr ( 0231 ) 
	);
	return strtr ( $txt, array_flip ( $Win1252ToPDFDocEncoding ) );
}

?>